5 REM--AHOY--MAY ISSUE--MATH MASTER--PROG PAGE 65 10 REM ****** MATH MASTER ****** ***** BY BOB LLORET ***** 15 REM ** FOR AHOY MAGAZINES ** 20 REM ************************* 90 LEV=0:T=0:PROB=0 100 PRINT "[147]":POKE 53280,6:POKE 53281,0 110 PRINT "[158]":PRINT TAB(11);"[145][176][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][174]" 120 PRINT TAB(11);"[194]* MATH MASTER *[194]" 130 PRINT TAB(11);"[173][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][189]" 140 PRINT:PRINT TAB(13);"BY: BOB LLORET":PRINT:PRINT 150 PRINT "[158][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168][168]" 160 PRINT TAB(11);"[145][145][145][145][154]FIRST NAME:";:INPUT NAME$ 161 IF NAME$="" THEN PRINT "":GOTO160 162 FOR A=1 TO 2:PRINT:NEXT A 165 S=54272:FOR L=0 TO 24:POKE S+L,0:NEXT 166 POKE S+1,22:POKE S,96:POKE S+5,10:POKE S+24,10:POKE S+4,33 170 PRINT TAB(11);"[1]..ADDITION":PRINT:PRINT TAB(11);"[156][2]..SUBTRACTION" 180 PRINT:PRINT TAB(11);"[3]..MULTIPLICATION" 190 PRINT:PRINT TAB(11);"[149][4]..DIVISION" 200 PRINT:PRINT "[158] [168][168][168][168][168] [168][168][168][168][168] [168][168][168][168][168] [168][168][168][168][168] " 205 PRINT 210 PRINT TAB(11);"YOUR CHOICE [1-4]?" 220 GET CHOICE$:IF CHOICE$="" THEN 220 225 REM [*** PLAYER LEVEL ***] 226 REM ======================== 230 PRINT "[147]":POKE 53280,0:POKE 53281,4 240 PRINT TAB(9);"[158][168][168][168][168] PLAYER LEVEL [168][168][168][168]":PRINT TAB(14);"[168][168][168][168][168][168][168][168][168][168][168][168]" 250 FOR A=1 TO 5:PRINT:NEXT A 260 PRINT TAB(11);"[144][1]..AGES 6 TO 9":PRINT:PRINT TAB(11);"[2]..AGES 10 TO 14" 270 PRINT:PRINT TAB(11);"[3]..AGES 15 TO ADULT":FOR A=1 TO 6:PRINT:NEXT A 280 PRINT TAB(12);"YOUR CHOICE [1-3]?" 290 GET LEV$:IF LEV$="" THEN 290 300 LEV=VAL(LEV$):CHOICE=VAL(CHOICE$) 310 IF LEV=1 THEN V=10:DIG=1:T=15:GOTO 360 320 IF LEV=2 THEN V=50:DIG=10:T=12:GOTO 360 330 IF LEV=3 THEN V=100:DIG=25:T=10:GOTO 360 360 ON CHOICE GOTO 500,1000,1500,2000 497 REM 498 REM [ **** ADDITION **** ] 499 REM ======================== 500 PRINT "[147]":POKE 53280,0:POKE 53281,5 510 PRINT TAB(11);"[144]* A D D I T I O N *":PRINT:PRINT TAB(17);"LEVEL";LEV 520 PROB=PROB+1:X=INT(RND(0)*V)+DIG:Y=INT(RND(0)*V)+DIG 530 PRINT TAB(15);"PROBLEM:";PROB 540 FOR A=1 TO 3:PRINT:NEXT A 550 PRINT "[144] [176][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][174]" 560 PRINT " [194] [194]" 570 PRINT " [194] [194]" 580 PRINT " [194] [194]" 590 PRINT " [173][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][189]" 595 FOR D=1 TO 500:NEXT D 600 FOR L=0 TO 24:POKE S+L,0:NEXT 605 POKE S+1,33:POKE S,135:POKE S+5,9:POKE S+24,10:POKE S+4,33 610 PRINT TAB(11);"[145][145][145]";X;" + ";Y;" = " 620 TI$="000000":B=0:Z=12 630 B=B+1:FOR A=1 TO Z:PRINT:NEXT 640 GET AN$(B):PRINT TAB(16);"[144][145]TIME:";"[156]";INT(TI/60) 645 IF INT(TI/60)>=T THEN 850 650 IF AN$(B)="" THEN 640 660 PRINT TAB(24+B);"[145][145][145][145][145][145][145][145][145][145][145][145][145]";AN$(B):IF AN$(B)=CHR$(13) THEN 670 665 GOTO 630 670 A$=AN$(1)+AN$(2)+AN$(3) 675 ANS=VAL(A$):IF ANS<>X+Y THEN 780 680 CENT=INT(40-LEN("CORRECT"+NAME$))/2 690 PRINT TAB(CENT);"[158]CORRECT ";NAME$;"," 700 FOR A=10 TO 0 STEP -1:POKE 53280,A:FOR D=1 TO 100:NEXT D:NEXT A:C=C+1 710 PRINT TAB(13);"YOU NOW HAVE ";C 720 PRINT TAB(13);"CORRECT ANSWERS" 730 FOR D=1 TO 2400:NEXT D 740 IF PROB=10 THEN 3000 750 GOTO 500 760 REM [ * WRONG ANSWER * ] 770 REM ==================== 780 CENT=INT(40-LEN("SORRY"+NAME$))/2 785 FOR L=0 TO 24:POKE S+L,0:NEXT:POKE S+1,4:POKE S,48 787 POKE S+5,10:POKE S+24,15:POKE S+4,33 790 PRINT TAB(CENT);"SORRY ";NAME$;"," 800 PRINT TAB(11);"BUT THE ANSWER IS...":PRINT TAB(18);"";X+Y 810 FOR D=1 TO 2400:NEXT D 820 IF PROB=10 THEN 3000 830 GOTO 500 840 REM [ *** TIME LIMIT *** ] 841 REM ====================== 850 CENT=INT(40-LEN("SORRY"+NAME$))/2 855 FOR L=0 TO 24:POKE S+L,0:NEXT:POKE S+1,4:POKE S,48 857 POKE S+5,10:POKE S+24,15:POKE S+4,33 860 PRINT TAB(CENT);"[145][145][145][145][145][145][145][145][145]SORRY";NAME$;"," 870 PRINT TAB(11);"BUT THE ANSWER IS...":PRINT TAB(18);"";X+Y 880 FOR D=1 TO 2400:NEXT D 890 IF PROB=10 THEN 3000 900 GOTO 500 997 REM 998 REM [ *** SUBTRACTION *** ] 999 REM ======================= 1000 PRINT "[147]":POKE 53280,0:POKE 53281,8 1010 PRINT TAB(8);"[144]* S U B T R A C T I O N *":PRINT:PRINT TAB(17);"LEVEL";LEV 1020 PROB=PROB+1:X=INT(RND(0)*V)+DIG+V:Y=INT(RND(0)*V)+1 1030 PRINT TAB(15);"PROBLEM:";PROB 1040 FOR A=1 TO 3:PRINT:NEXT A 1050 PRINT "[144] [176][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][174]" 1060 PRINT " [194] [194]" 1070 PRINT " [194] [194]" 1080 PRINT " [194] [194]" 1090 PRINT " [173][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][189]" 1095 FOR D=1 TO 500:NEXT D 1100 FOR L=0 TO 24:POKE S+L,0:NEXT 1105 POKE S+1,33:POKE S,135:POKE S+5,9:POKE S+24,10:POKE S+4,33 1110 PRINT TAB(11);"[145][145][145]";X;" - ";Y;" = " 1120 TI$="000000":B=0:Z=12 1130 B=B+1:FOR A=1 TO Z:PRINT:NEXT 1140 GET AN$(B):PRINT TAB(16);"[144][145]TIME:";"";INT(TI/60) 1145 IF INT(TI/60)>=T THEN 1350 1150 IF AN$(B)="" THEN 1140 1160 PRINT TAB(25+B);"[145][145][145][145][145][145][145][145][145][145][145][145][145]";AN$(B):IF AN$(B)=CHR$(13) THEN 1170 1165 GOTO 1130 1170 A$=AN$(1)+AN$(2)+AN$(3) 1175 ANS=VAL(A$):IF ANS<>X-Y THEN 1275 1180 CENT=INT(40-LEN("CORRECT"+NAME$))/2 1190 PRINT TAB(CENT);"[158]CORRECT ";NAME$;"," 1200 FOR A=10 TO 0 STEP -1:POKE 53280,A:FOR D=1 TO 120:NEXT D:NEXT A:C=C+1 1210 PRINT TAB(13);"YOU NOW HAVE ";C 1220 PRINT TAB(13);"CORRECT ANSWERS" 1230 FOR D=1 TO 2400:NEXT D 1240 IF PROB=10 THEN 3000 1250 GOTO 1000 1260 REM [ * WRONG ANSWER * ] 1270 REM ==================== 1275 FOR L=0 TO 24:POKE S+L,0:NEXT:POKE S+1,4:POKE S,48 1277 POKE S+5,10:POKE S+24,15:POKE S+4,33 1280 CENT=INT(40-LEN("SORRY"+NAME$))/2 1290 PRINT TAB(CENT);"[153]SORRY ";NAME$;"," 1300 PRINT TAB(11);"BUT THE ANSWER IS...":PRINT TAB(18);"";X-Y 1310 FOR D=1 TO 2400:NEXT D 1320 IF PROB=10 THEN 3000 1330 GOTO 1000 1340 REM [ *** TIME LIMIT *** ] 1341 REM ====================== 1350 CENT=INT(40-LEN("SORRY"+NAME$))/2 1360 PRINT TAB(CENT);"[145][145][145][145][145][145][145][145][145]SORRY ";NAME$;"," 1370 PRINT TAB(11);"BUT THE ANSWER IS...":PRINT TAB(18);"";X-Y 1380 FOR D=1 TO 2400:NEXT D 1390 IF PROB=10 THEN 3000 1400 GOTO 1000 1500 PRINT "[147]":POKE 53280,0:POKE 53281,6 1510 PRINT TAB(11);"[144]* M U L T I P L Y *":PRINT:PRINT TAB(17);"[158]LEVEL";LEV 1520 PROB=PROB+1:X=INT(RND(0)*V)+DIG:Y=INT(RND(0)*V)+DIG 1530 PRINT TAB(15);"[158]PROBLEM:";PROB 1540 FOR A=1 TO 3:PRINT:NEXT A 1550 PRINT "[144] [176][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][174]" 1560 PRINT " [194] [194]" 1570 PRINT " [194] [194]" 1580 PRINT " [194] [194]" 1590 PRINT " [173] [189]" 1595 FOR D=1 TO 500:NEXT D 1600 FOR L=0 TO 24:POKE S+L,0:NEXT 1605 POKE S+1,33:POKE S,135:POKE S+5,9:POKE S+24,10:POKE S+4,33 1610 PRINT TAB(11);"[145][145][145]";X;" X ";Y;" = " 1620 TI$="000000":B=0:Z=12 1630 B=B+1:FOR A=1 TO Z:PRINT:NEXT 1640 GET AN$(B):PRINT TAB(16);"[144][145]TIME:";"[156]";INT(TI/60) 1645 IF INT(TI/60)>=T THEN 1850 1650 IF AN$(B)="" THEN 1640 1660 PRINT TAB(24+B);"[145][145][145][145][145][145][145][145][145][145][145][145][145]";AN$(B):IF AN$(B)=CHR$(13) THEN 1670 1665 GOTO 1630 1670 A$=AN$(1)+AN$(2)+AN$(3) 1675 ANS=VAL(A$):IF ANS<>X*Y THEN 1780 1680 CENT=INT(40-LEN("CORRECT"+NAME$))/2 1690 PRINT TAB(CENT);"[158]CORRECT ";NAME$;"," 1700 FOR A=10 TO 0 STEP -1:POKE 53280,A:FOR D=1 TO 100:NEXT D:NEXT A:C=C+1 1710 PRINT TAB(13);"YOU NOW HAVE ";C 1720 PRINT TAB(13);"CORRECT ANSWERS" 1730 FOR D=1 TO 2400:NEXT D 1740 IF PROB=10 THEN 3000 1750 GOTO 1500 1760 REM [ * WRONG ANSWER * ] 1770 REM ==================== 1780 CENT=INT(40-LEN("SORRY"+NAME$))/2 1785 FOR L=0 TO 24:POKE S+L,0:NEXT:POKE S+1,4:POKE S,48 1787 POKE S+5,10:POKE S+24,15:POKE S+4,33 1790 PRINT TAB(CENT);"SORRY ";NAME$;"," 1800 PRINT TAB(11);"BUT THE ANSWER IS...":PRINT TAB(18);"";X*Y 1810 FOR D=1 TO 2400:NEXT D 1820 IF PROB=10 THEN 3000 1830 GOTO 1500 1840 REM [ *** TIME LIMIT *** ] 1841 REM ====================== 1850 CENT=INT(40-LEN("SORRY"+NAME$))/2 1855 FOR L=0 TO 24:POKE S+L,0:NEXT:POKE S+1,4:POKE S,48 1857 POKE S+5,10:POKE S+24,15:POKE S+4,33 1860 PRINT TAB(CENT);"[145][145][145][145][145][145][145][145][145]SORRY ";NAME$;"," 1870 PRINT TAB(11);"BUT THE ANSWER IS...":PRINT TAB(18);"";X*Y 1880 FOR D=1 TO 2400:NEXT D 1890 IF PROB=10 THEN 3000 1900 GOTO 1500 2000 PRINT "[147]":POKE 53280,6:POKE 53281,9 2010 PRINT TAB(11);"[144]* D I V I S I O N *":PRINT:PRINT TAB(17);"[158]LEVEL";LEV 2020 PROB=PROB+1:W=INT(RND(0)*V)+DIG:Y=INT(RND(0)*10)+1 2030 PRINT TAB(15);"[158]PROBLEM:";PROB 2040 FOR A=1 TO 3:PRINT:NEXT A 2050 PRINT "[144] [176][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][174]" 2060 PRINT " [194] [194]" 2070 PRINT " [194] [194]" 2080 PRINT " [194] [194]" 2090 PRINT " [173] [189]" 2095 FOR D=1 TO 500:NEXT D 2100 FOR L=0 TO 24:POKE S+L,0:NEXT 2105 POKE S+1,33:POKE S,135:POKE S+5,9:POKE S+24,10:POKE S+4,33 2110 X=INT(W*Y) 2115 PRINT TAB(11);"[145][145][145]";X;" / ";Y;" = " 2120 TI$="000000":B=0:Z=12 2130 B=B+1:FOR A=1 TO Z:PRINT:NEXT 2140 GET AN$(B):PRINT TAB(16);"[144][145]TIME:";"[156]";INT(TI/60) 2145 IF INT(TI/60)>=T THEN 2350 2150 IF AN$(B)="" THEN 2140 2160 PRINT TAB(24+B);"[145][145][145][145][145][145][145][145][145][145][145][145][145]";AN$(B):IF AN$(B)=CHR$(13) THEN 2170 2165 GOTO 2130 2170 A$=AN$(1)+AN$(2)+AN$(3) 2175 ANS=VAL(A$):IF ANS<>INT(X/Y) THEN 2280 2180 CENT=INT(40-LEN("CORRECT"+NAME$))/2 2190 PRINT TAB(CENT);"[158]CORRECT ";NAME$;"," 2200 FOR A=10 TO 0 STEP -1:POKE 53280,A:FOR D=1 TO 100:NEXT D:NEXT A:C=C+1 2210 PRINT TAB(13);"YOU NOW HAVE ";C 2220 PRINT TAB(13);"CORRECT ANSWERS" 2230 FOR D=1 TO 2400:NEXT D 2240 IF PROB=10 THEN 3000 2250 GOTO 2000 2260 REM [ * WRONG ANSWER * ] 2270 REM ==================== 2280 CENT=INT(40-LEN("SORRY"+NAME$))/2 2285 FOR L=0 TO 24:POKE S+L,0:NEXT:POKE S+1,4:POKE S,48 2287 POKE S+5,10:POKE S+24,15:POKE S+4,33 2290 PRINT TAB(CENT);"SORRY ";NAME$;"," 2300 PRINT TAB(11);"BUT THE ANSWER IS...":PRINT TAB(18);"";X/Y 2310 FOR D=1 TO 2400:NEXT D 2320 IF PROB=10 THEN 3000 2330 GOTO 2000 2340 REM [ *** TIME LIMIT *** ] 2345 REM ====================== 2350 CENT=INT(40-LEN("SORRY"+NAME$))/2 2355 FOR L=0 TO 24:POKE S+L,0:NEXT:POKE S+1,4:POKE S,48 2357 POKE S+5,10:POKE S+24,15:POKE S+4,33 2360 PRINT TAB(CENT);"[145][145][145][145][145][145][145][145][145]SORRY ";NAME$;"," 2370 PRINT TAB(11);"BUT THE ANSWER IS...":PRINT TAB(18);"";X/Y 2380 FOR D=1 TO 2400:NEXT D 2390 IF PROB=10 THEN 3000 2400 GOTO 2000 3000 REM *** FINAL RESULTS *** 3010 REM ===================== 3020 PRINT "[147]":POKE 53280,2:POKE 53281,15 3030 PRINT TAB(8);"[168][168][168][168][168] R E S U L T S [168][168][168][168][168]" 3035 PRINT TAB(12);"&[168][168][168][168][168][168][168][168][168][168][168][168][168][168][168]&" 3040 PRINT TAB(10);"YOU SCORED ";C;"OUT OF" 3050 PRINT TAB(15);"10 CORRECT" 3060 P=INT(C*100)/10 3070 PRINT TAB(11);"FOR A MARK OF ";P;"%" 3080 PRINT " [168][168][168][168][168] [168][168][168][168][168] [168][168][168][168][168] [168][168][168][168][168]" 3085 FOR D=1 TO 2000:NEXT D 3090 IF P<=60 THEN 3120 3100 IF P<=90 THEN 3150 3110 IF P>90 THEN 3180 3120 CENT=INT(40-LEN("COME ON"+NAME$))/2 3130 PRINT TAB(CENT);"COME ON ";NAME$;",":PRINT TAB(12);"I KNOW YOU CAN DO" 3140 PRINT TAB(12);"BETTER THAN THAT":GOTO 3220 3150 CENT=INT(40-LEN("NOT BAD"+NAME$))/2 3160 PRINT TAB(CENT);"NOT BAD ";NAME$;"," 3170 PRINT TAB(11);"I THINK YOU SHOULD":PRINT TAB(11);"TRY A LITTLE HARDER" 3175 GOTO 3220 3180 CENT=INT(40-LEN("CONGRATULATIONS"+NAME$))/2:FOR A=1 TO 3:PRINT:NEXT A 3185 FOR A=1 TO 7:PRINT TAB(CENT);"[145]CONGRATULATIONS ";NAME$;"," 3190 FORD=1 TO 200:NEXT D:PRINT TAB(CENT);"[145]CONGRATULATIONS ";NAME$;"," 3195 FOR D=1 TO 200:NEXT D:NEXT A 3200 PRINT TAB(12);"YOU GOT A PERFECT":PRINT TAB(16);"SCORE !!!" 3220 PRINT TAB(12);"TRY AGAIN [Y/N]?"; 3230 GET X$:IF X$="" THEN 3230 3240 IF X$<>"Y" THEN END 3250 GOTO 90